package py.edu.ucom.poo.waterloo.agente;

import java.util.ArrayList;
import java.util.Iterator;

import py.edu.ucom.poo.waterloo.*;
import py.edu.ucom.poo.waterloo.gui.WaterlooListener;

public class Estado {
	private Tablero t;
	private Estado anterior;
	private Movimiento m;
	private int peso;
	private int piezasEnemigasAntes;
	private int piezasAntes;
	private int sumaDeValorPiezasAntes;
	private int piezasEnemigas;
	private int piezas;
	private int sumaDeValorPiezas;
	private int up;
	private SandBoxInterface sandBoxInterface;

	public int getUp() {
		return up;
	}

	public void setUp(int up) {
		this.up = up;
	}

	private ArrayList<Estado> estadosHijos;

	public Estado() {
		t = new Tablero();
		//anterior = new Estado();
		estadosHijos = new ArrayList<Estado>();
		m = new Movimiento();
		peso = 0;
		up=1;
	}

	public int getPeso() {
		return peso;
	}

	public void setPeso(int pesonuevo) {
		this.peso = peso+pesonuevo;
	}

	public Tablero getT() {
		return t;
	}

	public void setT(Tablero t) {
		this.t = t;
	}

	public Estado getAnterior() {
		return anterior;
	}

	public void setAnterior(Estado anterior) {
		this.anterior = anterior;
	}

	public Movimiento getM() {
		return m;
	}

	public void setM(Movimiento m) {
		this.m = m;
	}

	public int getPiezasEnemigasAntes() {
		return piezasEnemigasAntes;
	}

	public void setPiezasEnemigasAntes(int piezasEnemigasAntes) {
		this.piezasEnemigasAntes = piezasEnemigasAntes;
	}

	public int getPiezasAntes() {
		return piezasAntes;
	}

	public void setPiezasAntes(int piezasAntes) {
		this.piezasAntes = piezasAntes;
	}

	public int getSumaDeValorPiezasAntes() {
		return sumaDeValorPiezasAntes;
	}

	public void setSumaDeValorPiezasAntes(int sumaDeValorPiezasAntes) {
		this.sumaDeValorPiezasAntes = sumaDeValorPiezasAntes;
	}

	public int getPiezasEnemigas() {
		return piezasEnemigas;
	}

	public void setPiezasEnemigas(int piezasEnemigas) {
		this.piezasEnemigas = piezasEnemigas;
	}

	public int getPiezas() {
		return piezas;
	}

	public void setPiezas(int piezas) {
		this.piezas = piezas;
	}

	public int getSumaDeValorPiezas() {
		return sumaDeValorPiezas;
	}

	public void setSumaDeValorPiezas(int sumaDeValorPiezas) {
		this.sumaDeValorPiezas = sumaDeValorPiezas;
	}

	public void agregarHijo(Estado a) {
		estadosHijos.add(a);
	}

	public ArrayList<Estado> getEstadosHijos() {
		return estadosHijos;
	}

	public Estado getHijoConMayorPeso() {
		Iterator<Estado> it = estadosHijos.iterator();
		int pesoMaximo = -10000;
		Estado eMaxpeso=new Estado();
		while (it.hasNext()) {
			Estado e = it.next();
			int pesoActual = e.getPeso();
			if (pesoActual > pesoMaximo) {
				e.setPeso(pesoActual);
				pesoMaximo=pesoActual;
				eMaxpeso=e;
			}
		}
		return eMaxpeso;
	}
}
